package com.hcj.demo.handler;

import com.hcj.demo.util.SpringContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.TaskService;
import org.flowable.engine.delegate.TaskListener;
import org.flowable.task.service.delegate.DelegateTask;

import java.time.LocalDateTime;
import java.util.Date;

/**
 * 经理处理
 */
@Slf4j
public class ManagerTaskHandler implements TaskListener {

    private TaskService taskService = SpringContextHolder.getBean(TaskService.class);

    @Override
    public void notify(DelegateTask delegateTask) {
        log.info("delegateTask.money = {}", delegateTask.getVariable("money"));
        delegateTask.setDescription("此时应该由经理审批，这是来自经理的委托描述");
        // delegateTask.setDueDate(new Date());
        // 1. 拿到审批流ID processInstanceId
        String processInstanceId = delegateTask.getProcessInstanceId();
        // 2. 根据processInstanceId 找到 报销单expenseId
        //expenseService.getOneByProcessInstanceId(processInstanceId);
        // 3. 根据expenseId 找到 报销人 userId,所在部门的部门经理userId
        taskService.claim(delegateTask.getId(), "经理"); // 经理签收，则assignee也是他；这种写法，在历史记录中可以被记录下来


        // 虽然可以被指派到经理，但是history中并不会记录assignee_
        // delegateTask.setAssignee("经理");
        // 指定需要填写表单form1
        delegateTask.setFormKey("form3");
    }

}
